package com.anxin.act.busFlow.dao;

import com.anxin.act.busFlow.entity.WfBusNodeEvolve;
import java.util.List;
import java.util.Map;

import com.anxin.framework.web.dao.BaseDao;
import org.apache.ibatis.annotations.Param;

/**
 * 业务节点进展Dao接口
 *
 * @author jbs
 * @date 2020-04-16
 */
public interface WfBusNodeEvolveDao extends BaseDao<WfBusNodeEvolve>{
    /**
     * 查询业务节点进展
     *
     * @param id 业务节点进展ID
     * @return 业务节点进展
     */
    public WfBusNodeEvolve getById(String id);

    /**
     * 根据业务ID获取业务节点名称
     * @param busId 业务ID
     * @return 业务节点名称
     */
    public String getNodeNameByBusId(@Param("busId") String busId);

    /**
     * 查询业务节点进展列表
     *
     * @param wfBusNodeEvolve 业务节点进展
     * @return 业务节点进展集合
     */
    public List<WfBusNodeEvolve> findList(WfBusNodeEvolve wfBusNodeEvolve);

    /**
     * 新增业务节点进展
     *
     * @param wfBusNodeEvolve 业务节点进展
     * @return 结果
     */
    public int insert(WfBusNodeEvolve wfBusNodeEvolve);

    /**
     * 修改业务节点进展
     *
     * @param wfBusNodeEvolve 业务节点进展
     * @return 结果
     */
    public int update(WfBusNodeEvolve wfBusNodeEvolve);

    /**
     * 删除业务节点进展
     *
     * @param id 业务节点进展ID
     * @param userId 操作人ID
     * @return 结果
     */
    public int deleteById(@Param("id") String id, @Param("userId") String userId);

    /**
     * 将历史进展都改成不是最新
     *
     * @param wfBusNodeEvolve
     */
    public void updateNoLatest(WfBusNodeEvolve wfBusNodeEvolve);


    /**
     * 获取最新节点ID
     *
     * @param busId
     */
    public WfBusNodeEvolve getLastNodeByBusId(@Param("busId") String busId);

    /**
     * 更新历史进展的离开时间和滞留时间
     *
     * @param wfBusNodeEvolve
     */
    public void updateEvolveTime(WfBusNodeEvolve wfBusNodeEvolve);

    /**
     * 查询当前节点
     * @param busType
     * @param busId
     */
    public WfBusNodeEvolve getLatestEvolve(@Param("busType") String busType, @Param("busId") String busId, @Param("roundId") String roundId);


    /**
     * 更新轮次ID
     * @param roundId
     * @param busId
     */
    public void updateRoundId(@Param("roundId") String roundId, @Param("busId") String busId);

    /**
     * 根据滞留时间查询项目
     * @param nodeId 节点ID
     * @param residenceTime 滞留时间
     */
    public List<Map<String,String>> findDealByResidenceTime(@Param("nodeId") String nodeId, @Param("residenceTime")String residenceTime);

    /**
     * 查询项目团队成员
     * @param dealId 项目ID
     * @return
     */
    public List<String> findDealTeam(@Param("dealId") String dealId);

}
